// 导入axios
import axios from 'axios'
// 导入message
import { Message } from 'element-ui'
// 导入清除token的方法
import { getItem, removeItem } from '@/utils/auth.js'
// 导入router
import router from '@/router' // router===this.$router

// 创建axios副本
const _axios = axios.create({
  // 设置基地址
  baseURL: process.env.VUE_APP_URL
})

// 添加请求拦截器
_axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    // console.log('请求拦截器config:', config)
    // 通过请求拦截统一加入token
    config.headers.Authorization = `Bearer ${getItem()}`
    // headers: {
    //   Authorization: `Bearer ${getItem()}`
    // }
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
_axios.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么
    // console.log('响应拦截器response:', response)
    return response.data
  },
  function (error) {
    // 对响应错误做点什么
    console.dir(error)
    // 防止error.response里面没有data和message
    if (error.response.data && error.response.data.message) {
      Message.error(error.response.data.message)
    }
    // 401统一处理 清除token 跳转登录页
    if (error.response.status === 401) {
      removeItem()
      router.push('/login')
    }
    return Promise.reject(error)
  }
)

// 暴露
export default _axios
